/*
 *
 *    Copyright (c) 2021 Project CHIP Authors
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

// THIS FILE IS GENERATED BY ZAP

// Prevent multiple inclusion
#pragma once

#include <app/util/basic-types.h>
#include <lib/support/Span.h>
#include <stdint.h>
#include <system/SystemPacketBuffer.h>

/*----------------------------------------------------------------------------*\
| Cluster Name                                                        |   ID   |
|---------------------------------------------------------------------+--------|
| AccountLogin                                                        | 0x050E |
| ApplicationBasic                                                    | 0x050D |
| ApplicationLauncher                                                 | 0x050C |
| AudioOutput                                                         | 0x050B |
| BarrierControl                                                      | 0x0103 |
| Basic                                                               | 0x0028 |
| BinaryInputBasic                                                    | 0x000F |
| Binding                                                             | 0xF000 |
| BridgedDeviceBasic                                                  | 0x0039 |
| ColorControl                                                        | 0x0300 |
| ContentLauncher                                                     | 0x050A |
| Descriptor                                                          | 0x001D |
| DiagnosticLogs                                                      | 0x0032 |
| DoorLock                                                            | 0x0101 |
| ElectricalMeasurement                                               | 0x0B04 |
| EthernetNetworkDiagnostics                                          | 0x0037 |
| FixedLabel                                                          | 0x0040 |
| FlowMeasurement                                                     | 0x0404 |
| GeneralCommissioning                                                | 0x0030 |
| GeneralDiagnostics                                                  | 0x0033 |
| GroupKeyManagement                                                  | 0xF004 |
| Groups                                                              | 0x0004 |
| Identify                                                            | 0x0003 |
| KeypadInput                                                         | 0x0509 |
| LevelControl                                                        | 0x0008 |
| LowPower                                                            | 0x0508 |
| MediaInput                                                          | 0x0507 |
| MediaPlayback                                                       | 0x0506 |
| NetworkCommissioning                                                | 0x0031 |
| OtaSoftwareUpdateProvider                                           | 0x0029 |
| OccupancySensing                                                    | 0x0406 |
| OnOff                                                               | 0x0006 |
| OperationalCredentials                                              | 0x003E |
| PressureMeasurement                                                 | 0x0403 |
| PumpConfigurationAndControl                                         | 0x0200 |
| RelativeHumidityMeasurement                                         | 0x0405 |
| Scenes                                                              | 0x0005 |
| SoftwareDiagnostics                                                 | 0x0034 |
| Switch                                                              | 0x003B |
| TvChannel                                                           | 0x0504 |
| TargetNavigator                                                     | 0x0505 |
| TemperatureMeasurement                                              | 0x0402 |
| TestCluster                                                         | 0x050F |
| Thermostat                                                          | 0x0201 |
| ThreadNetworkDiagnostics                                            | 0x0035 |
| WakeOnLan                                                           | 0x0503 |
| WiFiNetworkDiagnostics                                              | 0x0036 |
| WindowCovering                                                      | 0x0102 |
\*----------------------------------------------------------------------------*/

/*----------------------------------------------------------------------------*\
| Cluster AccountLogin                                                | 0x050E |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * GetSetupPIN                                                       |   0x00 |
| * Login                                                             |   0x01 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Account Login server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeAccountLoginClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Account Login server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeAccountLoginClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                       chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster ApplicationBasic                                            | 0x050D |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * ChangeStatus                                                      |   0x00 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * VendorName                                                        | 0x0000 |
| * VendorId                                                          | 0x0001 |
| * ApplicationName                                                   | 0x0002 |
| * ProductId                                                         | 0x0003 |
| * ApplicationId                                                     | 0x0005 |
| * CatalogVendorId                                                   | 0x0006 |
| * ApplicationStatus                                                 | 0x0007 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Application Basic server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeApplicationBasicClusterDiscoverAttributes(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Application Basic server read command for the vendor name attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeApplicationBasicClusterReadVendorNameAttribute(uint8_t seqNum,
                                                                                      chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Application Basic server read command for the vendor id attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeApplicationBasicClusterReadVendorIdAttribute(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Application Basic server read command for the application name attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeApplicationBasicClusterReadApplicationNameAttribute(uint8_t seqNum,
                                                                                           chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Application Basic server read command for the product id attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeApplicationBasicClusterReadProductIdAttribute(uint8_t seqNum,
                                                                                     chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Application Basic server read command for the application id attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeApplicationBasicClusterReadApplicationIdAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Application Basic server read command for the catalog vendor id attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeApplicationBasicClusterReadCatalogVendorIdAttribute(uint8_t seqNum,
                                                                                           chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Application Basic server read command for the application status attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeApplicationBasicClusterReadApplicationStatusAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Application Basic server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeApplicationBasicClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                           chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster ApplicationLauncher                                         | 0x050C |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * LaunchApp                                                         |   0x00 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * ApplicationLauncherList                                           | 0x0000 |
| * CatalogVendorId                                                   | 0x0001 |
| * ApplicationId                                                     | 0x0002 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Application Launcher server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeApplicationLauncherClusterDiscoverAttributes(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Application Launcher server read command for the application launcher list attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeApplicationLauncherClusterReadApplicationLauncherListAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Application Launcher server read command for the catalog vendor id attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeApplicationLauncherClusterReadCatalogVendorIdAttribute(uint8_t seqNum,
                                                                                              chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Application Launcher server read command for the application id attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeApplicationLauncherClusterReadApplicationIdAttribute(uint8_t seqNum,
                                                                                            chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Application Launcher server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeApplicationLauncherClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                              chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster AudioOutput                                                 | 0x050B |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * RenameOutput                                                      |   0x01 |
| * SelectOutput                                                      |   0x00 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * AudioOutputList                                                   | 0x0000 |
| * CurrentAudioOutput                                                | 0x0001 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Audio Output server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeAudioOutputClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Audio Output server read command for the audio output list attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeAudioOutputClusterReadAudioOutputListAttribute(uint8_t seqNum,
                                                                                      chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Audio Output server read command for the current audio output attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeAudioOutputClusterReadCurrentAudioOutputAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Audio Output server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeAudioOutputClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                      chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster BarrierControl                                              | 0x0103 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * BarrierControlGoToPercent                                         |   0x00 |
| * BarrierControlStop                                                |   0x01 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * BarrierMovingState                                                | 0x0001 |
| * BarrierSafetyStatus                                               | 0x0002 |
| * BarrierCapabilities                                               | 0x0003 |
| * BarrierPosition                                                   | 0x000A |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Barrier Control server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBarrierControlClusterDiscoverAttributes(uint8_t seqNum,
                                                                               chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Barrier Control server read command for the barrier moving state attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBarrierControlClusterReadBarrierMovingStateAttribute(uint8_t seqNum,
                                                                                            chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Barrier Control server read command for the barrier safety status attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBarrierControlClusterReadBarrierSafetyStatusAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Barrier Control server read command for the barrier capabilities attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBarrierControlClusterReadBarrierCapabilitiesAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Barrier Control server read command for the barrier position attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBarrierControlClusterReadBarrierPositionAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Barrier Control server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBarrierControlClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster Basic                                                       | 0x0028 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * MfgSpecificPing                                                   |   0x00 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * InteractionModelVersion                                           | 0x0000 |
| * VendorName                                                        | 0x0001 |
| * VendorID                                                          | 0x0002 |
| * ProductName                                                       | 0x0003 |
| * ProductID                                                         | 0x0004 |
| * UserLabel                                                         | 0x0005 |
| * Location                                                          | 0x0006 |
| * HardwareVersion                                                   | 0x0007 |
| * HardwareVersionString                                             | 0x0008 |
| * SoftwareVersion                                                   | 0x0009 |
| * SoftwareVersionString                                             | 0x000A |
| * ManufacturingDate                                                 | 0x000B |
| * PartNumber                                                        | 0x000C |
| * ProductURL                                                        | 0x000D |
| * ProductLabel                                                      | 0x000E |
| * SerialNumber                                                      | 0x000F |
| * LocalConfigDisabled                                               | 0x0010 |
| * Reachable                                                         | 0x0011 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Basic server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server read command for the InteractionModelVersion attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadInteractionModelVersionAttribute(uint8_t seqNum,
                                                                                        chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server read command for the VendorName attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadVendorNameAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server read command for the VendorID attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadVendorIDAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server read command for the ProductName attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadProductNameAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server read command for the ProductID attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadProductIDAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server read command for the UserLabel attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadUserLabelAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server write command for the UserLabel attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterWriteUserLabelAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                           chip::ByteSpan userLabel);

/**
 * @brief
 *    Encode a Basic server read command for the Location attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadLocationAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server write command for the Location attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterWriteLocationAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                          chip::ByteSpan location);

/**
 * @brief
 *    Encode a Basic server read command for the HardwareVersion attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadHardwareVersionAttribute(uint8_t seqNum,
                                                                                chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server read command for the HardwareVersionString attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadHardwareVersionStringAttribute(uint8_t seqNum,
                                                                                      chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server read command for the SoftwareVersion attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadSoftwareVersionAttribute(uint8_t seqNum,
                                                                                chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server read command for the SoftwareVersionString attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadSoftwareVersionStringAttribute(uint8_t seqNum,
                                                                                      chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server read command for the ManufacturingDate attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadManufacturingDateAttribute(uint8_t seqNum,
                                                                                  chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server read command for the PartNumber attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadPartNumberAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server read command for the ProductURL attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadProductURLAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server read command for the ProductLabel attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadProductLabelAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server read command for the SerialNumber attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadSerialNumberAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server read command for the LocalConfigDisabled attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadLocalConfigDisabledAttribute(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server write command for the LocalConfigDisabled attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterWriteLocalConfigDisabledAttribute(uint8_t seqNum,
                                                                                     chip::EndpointId destinationEndpoint,
                                                                                     uint8_t localConfigDisabled);

/**
 * @brief
 *    Encode a Basic server read command for the Reachable attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadReachableAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Basic server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBasicClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster BinaryInputBasic                                            | 0x000F |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * OutOfService                                                      | 0x0051 |
| * PresentValue                                                      | 0x0055 |
| * StatusFlags                                                       | 0x006F |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Binary Input (Basic) server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBinaryInputBasicClusterDiscoverAttributes(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Binary Input (Basic) server read command for the out of service attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBinaryInputBasicClusterReadOutOfServiceAttribute(uint8_t seqNum,
                                                                                        chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Binary Input (Basic) server write command for the out of service attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeBinaryInputBasicClusterWriteOutOfServiceAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint8_t outOfService);

/**
 * @brief
 *    Encode a Binary Input (Basic) server read command for the present value attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBinaryInputBasicClusterReadPresentValueAttribute(uint8_t seqNum,
                                                                                        chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Binary Input (Basic) server write command for the present value attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeBinaryInputBasicClusterWritePresentValueAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint8_t presentValue);

/**
 * @brief
 *    Encode a Binary Input (Basic) server configure report command for the present value attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle encodeBinaryInputBasicClusterConfigurePresentValueAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint,
                                                                                             uint16_t minInterval,
                                                                                             uint16_t maxInterval);

/**
 * @brief
 *    Encode a Binary Input (Basic) server read command for the status flags attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBinaryInputBasicClusterReadStatusFlagsAttribute(uint8_t seqNum,
                                                                                       chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Binary Input (Basic) server configure report command for the status flags attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle encodeBinaryInputBasicClusterConfigureStatusFlagsAttribute(uint8_t seqNum,
                                                                                            chip::EndpointId destinationEndpoint,
                                                                                            uint16_t minInterval,
                                                                                            uint16_t maxInterval);

/**
 * @brief
 *    Encode a Binary Input (Basic) server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBinaryInputBasicClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                           chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster Binding                                                     | 0xF000 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * Bind                                                              |   0x00 |
| * Unbind                                                            |   0x01 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Binding server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBindingClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Binding server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBindingClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                  chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster BridgedDeviceBasic                                          | 0x0039 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * VendorName                                                        | 0x0001 |
| * VendorID                                                          | 0x0002 |
| * ProductName                                                       | 0x0003 |
| * UserLabel                                                         | 0x0005 |
| * HardwareVersion                                                   | 0x0007 |
| * HardwareVersionString                                             | 0x0008 |
| * SoftwareVersion                                                   | 0x0009 |
| * SoftwareVersionString                                             | 0x000A |
| * ManufacturingDate                                                 | 0x000B |
| * PartNumber                                                        | 0x000C |
| * ProductURL                                                        | 0x000D |
| * ProductLabel                                                      | 0x000E |
| * SerialNumber                                                      | 0x000F |
| * Reachable                                                         | 0x0011 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Bridged Device Basic server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBridgedDeviceBasicClusterDiscoverAttributes(uint8_t seqNum,
                                                                                   chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Bridged Device Basic server read command for the VendorName attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBridgedDeviceBasicClusterReadVendorNameAttribute(uint8_t seqNum,
                                                                                        chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Bridged Device Basic server read command for the VendorID attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBridgedDeviceBasicClusterReadVendorIDAttribute(uint8_t seqNum,
                                                                                      chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Bridged Device Basic server read command for the ProductName attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBridgedDeviceBasicClusterReadProductNameAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Bridged Device Basic server read command for the UserLabel attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBridgedDeviceBasicClusterReadUserLabelAttribute(uint8_t seqNum,
                                                                                       chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Bridged Device Basic server write command for the UserLabel attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBridgedDeviceBasicClusterWriteUserLabelAttribute(uint8_t seqNum,
                                                                                        chip::EndpointId destinationEndpoint,
                                                                                        chip::ByteSpan userLabel);

/**
 * @brief
 *    Encode a Bridged Device Basic server read command for the HardwareVersion attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBridgedDeviceBasicClusterReadHardwareVersionAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Bridged Device Basic server read command for the HardwareVersionString attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeBridgedDeviceBasicClusterReadHardwareVersionStringAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Bridged Device Basic server read command for the SoftwareVersion attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBridgedDeviceBasicClusterReadSoftwareVersionAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Bridged Device Basic server read command for the SoftwareVersionString attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeBridgedDeviceBasicClusterReadSoftwareVersionStringAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Bridged Device Basic server read command for the ManufacturingDate attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeBridgedDeviceBasicClusterReadManufacturingDateAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Bridged Device Basic server read command for the PartNumber attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBridgedDeviceBasicClusterReadPartNumberAttribute(uint8_t seqNum,
                                                                                        chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Bridged Device Basic server read command for the ProductURL attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBridgedDeviceBasicClusterReadProductURLAttribute(uint8_t seqNum,
                                                                                        chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Bridged Device Basic server read command for the ProductLabel attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBridgedDeviceBasicClusterReadProductLabelAttribute(uint8_t seqNum,
                                                                                          chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Bridged Device Basic server read command for the SerialNumber attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBridgedDeviceBasicClusterReadSerialNumberAttribute(uint8_t seqNum,
                                                                                          chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Bridged Device Basic server read command for the Reachable attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBridgedDeviceBasicClusterReadReachableAttribute(uint8_t seqNum,
                                                                                       chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Bridged Device Basic server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeBridgedDeviceBasicClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster ColorControl                                                | 0x0300 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * ColorLoopSet                                                      |   0x44 |
| * EnhancedMoveHue                                                   |   0x41 |
| * EnhancedMoveToHue                                                 |   0x40 |
| * EnhancedMoveToHueAndSaturation                                    |   0x43 |
| * EnhancedStepHue                                                   |   0x42 |
| * MoveColor                                                         |   0x08 |
| * MoveColorTemperature                                              |   0x4B |
| * MoveHue                                                           |   0x01 |
| * MoveSaturation                                                    |   0x04 |
| * MoveToColor                                                       |   0x07 |
| * MoveToColorTemperature                                            |   0x0A |
| * MoveToHue                                                         |   0x00 |
| * MoveToHueAndSaturation                                            |   0x06 |
| * MoveToSaturation                                                  |   0x03 |
| * StepColor                                                         |   0x09 |
| * StepColorTemperature                                              |   0x4C |
| * StepHue                                                           |   0x02 |
| * StepSaturation                                                    |   0x05 |
| * StopMoveStep                                                      |   0x47 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * CurrentHue                                                        | 0x0000 |
| * CurrentSaturation                                                 | 0x0001 |
| * RemainingTime                                                     | 0x0002 |
| * CurrentX                                                          | 0x0003 |
| * CurrentY                                                          | 0x0004 |
| * DriftCompensation                                                 | 0x0005 |
| * CompensationText                                                  | 0x0006 |
| * ColorTemperature                                                  | 0x0007 |
| * ColorMode                                                         | 0x0008 |
| * ColorControlOptions                                               | 0x000F |
| * NumberOfPrimaries                                                 | 0x0010 |
| * Primary1X                                                         | 0x0011 |
| * Primary1Y                                                         | 0x0012 |
| * Primary1Intensity                                                 | 0x0013 |
| * Primary2X                                                         | 0x0015 |
| * Primary2Y                                                         | 0x0016 |
| * Primary2Intensity                                                 | 0x0017 |
| * Primary3X                                                         | 0x0019 |
| * Primary3Y                                                         | 0x001A |
| * Primary3Intensity                                                 | 0x001B |
| * Primary4X                                                         | 0x0020 |
| * Primary4Y                                                         | 0x0021 |
| * Primary4Intensity                                                 | 0x0022 |
| * Primary5X                                                         | 0x0024 |
| * Primary5Y                                                         | 0x0025 |
| * Primary5Intensity                                                 | 0x0026 |
| * Primary6X                                                         | 0x0028 |
| * Primary6Y                                                         | 0x0029 |
| * Primary6Intensity                                                 | 0x002A |
| * WhitePointX                                                       | 0x0030 |
| * WhitePointY                                                       | 0x0031 |
| * ColorPointRX                                                      | 0x0032 |
| * ColorPointRY                                                      | 0x0033 |
| * ColorPointRIntensity                                              | 0x0034 |
| * ColorPointGX                                                      | 0x0036 |
| * ColorPointGY                                                      | 0x0037 |
| * ColorPointGIntensity                                              | 0x0038 |
| * ColorPointBX                                                      | 0x003A |
| * ColorPointBY                                                      | 0x003B |
| * ColorPointBIntensity                                              | 0x003C |
| * EnhancedCurrentHue                                                | 0x4000 |
| * EnhancedColorMode                                                 | 0x4001 |
| * ColorLoopActive                                                   | 0x4002 |
| * ColorLoopDirection                                                | 0x4003 |
| * ColorLoopTime                                                     | 0x4004 |
| * ColorCapabilities                                                 | 0x400A |
| * ColorTempPhysicalMin                                              | 0x400B |
| * ColorTempPhysicalMax                                              | 0x400C |
| * CoupleColorTempToLevelMinMireds                                   | 0x400D |
| * StartUpColorTemperatureMireds                                     | 0x4010 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Color Control server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the current hue attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadCurrentHueAttribute(uint8_t seqNum,
                                                                                  chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server configure report command for the current hue attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterConfigureCurrentHueAttribute(uint8_t seqNum,
                                                                                       chip::EndpointId destinationEndpoint,
                                                                                       uint16_t minInterval, uint16_t maxInterval,
                                                                                       uint8_t change);

/**
 * @brief
 *    Encode a Color Control server read command for the current saturation attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadCurrentSaturationAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server configure report command for the current saturation attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterConfigureCurrentSaturationAttribute(uint8_t seqNum,
                                                                                              chip::EndpointId destinationEndpoint,
                                                                                              uint16_t minInterval,
                                                                                              uint16_t maxInterval, uint8_t change);

/**
 * @brief
 *    Encode a Color Control server read command for the remaining time attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadRemainingTimeAttribute(uint8_t seqNum,
                                                                                     chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the current x attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadCurrentXAttribute(uint8_t seqNum,
                                                                                chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server configure report command for the current x attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterConfigureCurrentXAttribute(uint8_t seqNum,
                                                                                     chip::EndpointId destinationEndpoint,
                                                                                     uint16_t minInterval, uint16_t maxInterval,
                                                                                     uint16_t change);

/**
 * @brief
 *    Encode a Color Control server read command for the current y attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadCurrentYAttribute(uint8_t seqNum,
                                                                                chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server configure report command for the current y attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterConfigureCurrentYAttribute(uint8_t seqNum,
                                                                                     chip::EndpointId destinationEndpoint,
                                                                                     uint16_t minInterval, uint16_t maxInterval,
                                                                                     uint16_t change);

/**
 * @brief
 *    Encode a Color Control server read command for the drift compensation attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadDriftCompensationAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the compensation text attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadCompensationTextAttribute(uint8_t seqNum,
                                                                                        chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the color temperature attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorTemperatureAttribute(uint8_t seqNum,
                                                                                        chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server configure report command for the color temperature attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterConfigureColorTemperatureAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint,
                                                                                             uint16_t minInterval,
                                                                                             uint16_t maxInterval, uint16_t change);

/**
 * @brief
 *    Encode a Color Control server read command for the color mode attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorModeAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the color control options attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorControlOptionsAttribute(uint8_t seqNum,
                                                                                           chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server write command for the color control options attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterWriteColorControlOptionsAttribute(uint8_t seqNum,
                                                                                            chip::EndpointId destinationEndpoint,
                                                                                            uint8_t colorControlOptions);

/**
 * @brief
 *    Encode a Color Control server read command for the number of primaries attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadNumberOfPrimariesAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 1 x attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary1XAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 1 y attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary1YAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 1 intensity attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary1IntensityAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 2 x attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary2XAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 2 y attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary2YAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 2 intensity attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary2IntensityAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 3 x attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary3XAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 3 y attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary3YAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 3 intensity attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary3IntensityAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 4 x attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary4XAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 4 y attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary4YAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 4 intensity attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary4IntensityAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 5 x attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary5XAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 5 y attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary5YAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 5 intensity attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary5IntensityAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 6 x attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary6XAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 6 y attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary6YAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the primary 6 intensity attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadPrimary6IntensityAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the white point x attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadWhitePointXAttribute(uint8_t seqNum,
                                                                                   chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server write command for the white point x attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeColorControlClusterWriteWhitePointXAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t whitePointX);

/**
 * @brief
 *    Encode a Color Control server read command for the white point y attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadWhitePointYAttribute(uint8_t seqNum,
                                                                                   chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server write command for the white point y attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeColorControlClusterWriteWhitePointYAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t whitePointY);

/**
 * @brief
 *    Encode a Color Control server read command for the color point r x attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointRXAttribute(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server write command for the color point r x attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeColorControlClusterWriteColorPointRXAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t colorPointRX);

/**
 * @brief
 *    Encode a Color Control server read command for the color point r y attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointRYAttribute(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server write command for the color point r y attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeColorControlClusterWriteColorPointRYAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t colorPointRY);

/**
 * @brief
 *    Encode a Color Control server read command for the color point r intensity attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointRIntensityAttribute(uint8_t seqNum,
                                                                                            chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server write command for the color point r intensity attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterWriteColorPointRIntensityAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint,
                                                                                             uint8_t colorPointRIntensity);

/**
 * @brief
 *    Encode a Color Control server read command for the color point g x attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointGXAttribute(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server write command for the color point g x attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeColorControlClusterWriteColorPointGXAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t colorPointGX);

/**
 * @brief
 *    Encode a Color Control server read command for the color point g y attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointGYAttribute(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server write command for the color point g y attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeColorControlClusterWriteColorPointGYAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t colorPointGY);

/**
 * @brief
 *    Encode a Color Control server read command for the color point g intensity attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointGIntensityAttribute(uint8_t seqNum,
                                                                                            chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server write command for the color point g intensity attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterWriteColorPointGIntensityAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint,
                                                                                             uint8_t colorPointGIntensity);

/**
 * @brief
 *    Encode a Color Control server read command for the color point b x attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointBXAttribute(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server write command for the color point b x attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeColorControlClusterWriteColorPointBXAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t colorPointBX);

/**
 * @brief
 *    Encode a Color Control server read command for the color point b y attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointBYAttribute(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server write command for the color point b y attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeColorControlClusterWriteColorPointBYAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t colorPointBY);

/**
 * @brief
 *    Encode a Color Control server read command for the color point b intensity attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorPointBIntensityAttribute(uint8_t seqNum,
                                                                                            chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server write command for the color point b intensity attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterWriteColorPointBIntensityAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint,
                                                                                             uint8_t colorPointBIntensity);

/**
 * @brief
 *    Encode a Color Control server read command for the enhanced current hue attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadEnhancedCurrentHueAttribute(uint8_t seqNum,
                                                                                          chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the enhanced color mode attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadEnhancedColorModeAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the color loop active attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorLoopActiveAttribute(uint8_t seqNum,
                                                                                       chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the color loop direction attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorLoopDirectionAttribute(uint8_t seqNum,
                                                                                          chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the color loop time attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorLoopTimeAttribute(uint8_t seqNum,
                                                                                     chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the color capabilities attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorCapabilitiesAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the color temp physical min attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorTempPhysicalMinAttribute(uint8_t seqNum,
                                                                                            chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the color temp physical max attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadColorTempPhysicalMaxAttribute(uint8_t seqNum,
                                                                                            chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the couple color temp to level min-mireds attribute into buffer including the
 * APS frame
 */
chip::System::PacketBufferHandle
encodeColorControlClusterReadCoupleColorTempToLevelMinMiredsAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server read command for the start up color temperature mireds attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeColorControlClusterReadStartUpColorTemperatureMiredsAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Color Control server write command for the start up color temperature mireds attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeColorControlClusterWriteStartUpColorTemperatureMiredsAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                     uint16_t startUpColorTemperatureMireds);

/**
 * @brief
 *    Encode a Color Control server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeColorControlClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                       chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster ContentLauncher                                             | 0x050A |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * LaunchContent                                                     |   0x00 |
| * LaunchURL                                                         |   0x01 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * AcceptsHeaderList                                                 | 0x0000 |
| * SupportedStreamingTypes                                           | 0x0001 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Content Launcher server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeContentLauncherClusterDiscoverAttributes(uint8_t seqNum,
                                                                                chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Content Launcher server read command for the accepts header list attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeContentLauncherClusterReadAcceptsHeaderListAttribute(uint8_t seqNum,
                                                                                            chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Content Launcher server read command for the supported streaming types attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeContentLauncherClusterReadSupportedStreamingTypesAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Content Launcher server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeContentLauncherClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                          chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster Descriptor                                                  | 0x001D |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * DeviceList                                                        | 0x0000 |
| * ServerList                                                        | 0x0001 |
| * ClientList                                                        | 0x0002 |
| * PartsList                                                         | 0x0003 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Descriptor server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeDescriptorClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Descriptor server read command for the device list attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeDescriptorClusterReadDeviceListAttribute(uint8_t seqNum,
                                                                                chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Descriptor server read command for the server list attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeDescriptorClusterReadServerListAttribute(uint8_t seqNum,
                                                                                chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Descriptor server read command for the client list attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeDescriptorClusterReadClientListAttribute(uint8_t seqNum,
                                                                                chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Descriptor server read command for the parts list attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeDescriptorClusterReadPartsListAttribute(uint8_t seqNum,
                                                                               chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Descriptor server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeDescriptorClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                     chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster DiagnosticLogs                                              | 0x0032 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * RetrieveLogsRequest                                               |   0x00 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Diagnostic Logs server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeDiagnosticLogsClusterDiscoverAttributes(uint8_t seqNum,
                                                                               chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster DoorLock                                                    | 0x0101 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * ClearAllPins                                                      |   0x08 |
| * ClearAllRfids                                                     |   0x19 |
| * ClearHolidaySchedule                                              |   0x13 |
| * ClearPin                                                          |   0x07 |
| * ClearRfid                                                         |   0x18 |
| * ClearWeekdaySchedule                                              |   0x0D |
| * ClearYeardaySchedule                                              |   0x10 |
| * GetHolidaySchedule                                                |   0x12 |
| * GetLogRecord                                                      |   0x04 |
| * GetPin                                                            |   0x06 |
| * GetRfid                                                           |   0x17 |
| * GetUserType                                                       |   0x15 |
| * GetWeekdaySchedule                                                |   0x0C |
| * GetYeardaySchedule                                                |   0x0F |
| * LockDoor                                                          |   0x00 |
| * SetHolidaySchedule                                                |   0x11 |
| * SetPin                                                            |   0x05 |
| * SetRfid                                                           |   0x16 |
| * SetUserType                                                       |   0x14 |
| * SetWeekdaySchedule                                                |   0x0B |
| * SetYeardaySchedule                                                |   0x0E |
| * UnlockDoor                                                        |   0x01 |
| * UnlockWithTimeout                                                 |   0x03 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * LockState                                                         | 0x0000 |
| * LockType                                                          | 0x0001 |
| * ActuatorEnabled                                                   | 0x0002 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Door Lock server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeDoorLockClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Door Lock server read command for the lock state attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeDoorLockClusterReadLockStateAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Door Lock server configure report command for the lock state attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeDoorLockClusterConfigureLockStateAttribute(uint8_t seqNum,
                                                                                  chip::EndpointId destinationEndpoint,
                                                                                  uint16_t minInterval, uint16_t maxInterval);

/**
 * @brief
 *    Encode a Door Lock server read command for the lock type attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeDoorLockClusterReadLockTypeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Door Lock server read command for the actuator enabled attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeDoorLockClusterReadActuatorEnabledAttribute(uint8_t seqNum,
                                                                                   chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Door Lock server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeDoorLockClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                   chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster ElectricalMeasurement                                       | 0x0B04 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * MeasurementType                                                   | 0x0000 |
| * TotalActivePower                                                  | 0x0304 |
| * RmsVoltage                                                        | 0x0505 |
| * RmsVoltageMin                                                     | 0x0506 |
| * RmsVoltageMax                                                     | 0x0507 |
| * RmsCurrent                                                        | 0x0508 |
| * RmsCurrentMin                                                     | 0x0509 |
| * RmsCurrentMax                                                     | 0x050A |
| * ActivePower                                                       | 0x050B |
| * ActivePowerMin                                                    | 0x050C |
| * ActivePowerMax                                                    | 0x050D |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Electrical Measurement server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeElectricalMeasurementClusterDiscoverAttributes(uint8_t seqNum,
                                                                                      chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Electrical Measurement server read command for the measurement type attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeElectricalMeasurementClusterReadMeasurementTypeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Electrical Measurement server read command for the total active power attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeElectricalMeasurementClusterReadTotalActivePowerAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Electrical Measurement server read command for the rms voltage attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeElectricalMeasurementClusterReadRmsVoltageAttribute(uint8_t seqNum,
                                                                                           chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Electrical Measurement server read command for the rms voltage min attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeElectricalMeasurementClusterReadRmsVoltageMinAttribute(uint8_t seqNum,
                                                                                              chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Electrical Measurement server read command for the rms voltage max attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeElectricalMeasurementClusterReadRmsVoltageMaxAttribute(uint8_t seqNum,
                                                                                              chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Electrical Measurement server read command for the rms current attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeElectricalMeasurementClusterReadRmsCurrentAttribute(uint8_t seqNum,
                                                                                           chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Electrical Measurement server read command for the rms current min attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeElectricalMeasurementClusterReadRmsCurrentMinAttribute(uint8_t seqNum,
                                                                                              chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Electrical Measurement server read command for the rms current max attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeElectricalMeasurementClusterReadRmsCurrentMaxAttribute(uint8_t seqNum,
                                                                                              chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Electrical Measurement server read command for the active power attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeElectricalMeasurementClusterReadActivePowerAttribute(uint8_t seqNum,
                                                                                            chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Electrical Measurement server read command for the active power min attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeElectricalMeasurementClusterReadActivePowerMinAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Electrical Measurement server read command for the active power max attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeElectricalMeasurementClusterReadActivePowerMaxAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Electrical Measurement server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeElectricalMeasurementClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster EthernetNetworkDiagnostics                                  | 0x0037 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * ResetCounts                                                       |   0x00 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * PacketRxCount                                                     | 0x0002 |
| * PacketTxCount                                                     | 0x0003 |
| * TxErrCount                                                        | 0x0004 |
| * CollisionCount                                                    | 0x0005 |
| * OverrunCount                                                      | 0x0006 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Ethernet Network Diagnostics server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeEthernetNetworkDiagnosticsClusterDiscoverAttributes(uint8_t seqNum,
                                                                                           chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Ethernet Network Diagnostics server read command for the PacketRxCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeEthernetNetworkDiagnosticsClusterReadPacketRxCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Ethernet Network Diagnostics server read command for the PacketTxCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeEthernetNetworkDiagnosticsClusterReadPacketTxCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Ethernet Network Diagnostics server read command for the TxErrCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeEthernetNetworkDiagnosticsClusterReadTxErrCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Ethernet Network Diagnostics server read command for the CollisionCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeEthernetNetworkDiagnosticsClusterReadCollisionCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Ethernet Network Diagnostics server read command for the OverrunCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeEthernetNetworkDiagnosticsClusterReadOverrunCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Ethernet Network Diagnostics server read command for the cluster revision attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeEthernetNetworkDiagnosticsClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster FixedLabel                                                  | 0x0040 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * LabelList                                                         | 0x0000 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Fixed Label server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeFixedLabelClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Fixed Label server read command for the label list attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeFixedLabelClusterReadLabelListAttribute(uint8_t seqNum,
                                                                               chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Fixed Label server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeFixedLabelClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                     chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster FlowMeasurement                                             | 0x0404 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * MeasuredValue                                                     | 0x0000 |
| * MinMeasuredValue                                                  | 0x0001 |
| * MaxMeasuredValue                                                  | 0x0002 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Flow Measurement server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeFlowMeasurementClusterDiscoverAttributes(uint8_t seqNum,
                                                                                chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Flow Measurement server read command for the measured value attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeFlowMeasurementClusterReadMeasuredValueAttribute(uint8_t seqNum,
                                                                                        chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Flow Measurement server read command for the min measured value attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeFlowMeasurementClusterReadMinMeasuredValueAttribute(uint8_t seqNum,
                                                                                           chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Flow Measurement server read command for the max measured value attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeFlowMeasurementClusterReadMaxMeasuredValueAttribute(uint8_t seqNum,
                                                                                           chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Flow Measurement server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeFlowMeasurementClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                          chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster GeneralCommissioning                                        | 0x0030 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * ArmFailSafe                                                       |   0x00 |
| * CommissioningComplete                                             |   0x04 |
| * SetRegulatoryConfig                                               |   0x02 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * FabricId                                                          | 0x0000 |
| * Breadcrumb                                                        | 0x0001 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a General Commissioning server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeGeneralCommissioningClusterDiscoverAttributes(uint8_t seqNum,
                                                                                     chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a General Commissioning server read command for the FabricId attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeGeneralCommissioningClusterReadFabricIdAttribute(uint8_t seqNum,
                                                                                        chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a General Commissioning server read command for the Breadcrumb attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeGeneralCommissioningClusterReadBreadcrumbAttribute(uint8_t seqNum,
                                                                                          chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a General Commissioning server write command for the Breadcrumb attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeGeneralCommissioningClusterWriteBreadcrumbAttribute(uint8_t seqNum,
                                                                                           chip::EndpointId destinationEndpoint,
                                                                                           uint64_t breadcrumb);

/**
 * @brief
 *    Encode a General Commissioning server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeGeneralCommissioningClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster GeneralDiagnostics                                          | 0x0033 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * NetworkInterfaces                                                 | 0x0000 |
| * RebootCount                                                       | 0x0001 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a General Diagnostics server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeGeneralDiagnosticsClusterDiscoverAttributes(uint8_t seqNum,
                                                                                   chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a General Diagnostics server read command for the NetworkInterfaces attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeGeneralDiagnosticsClusterReadNetworkInterfacesAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a General Diagnostics server read command for the RebootCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeGeneralDiagnosticsClusterReadRebootCountAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a General Diagnostics server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeGeneralDiagnosticsClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster GroupKeyManagement                                          | 0xF004 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * Groups                                                            | 0x0000 |
| * GroupKeys                                                         | 0x0001 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Group Key Management server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeGroupKeyManagementClusterDiscoverAttributes(uint8_t seqNum,
                                                                                   chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Group Key Management server read command for the groups attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeGroupKeyManagementClusterReadGroupsAttribute(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Group Key Management server read command for the group keys attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeGroupKeyManagementClusterReadGroupKeysAttribute(uint8_t seqNum,
                                                                                       chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Group Key Management server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeGroupKeyManagementClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster Groups                                                      | 0x0004 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * AddGroup                                                          |   0x00 |
| * AddGroupIfIdentifying                                             |   0x05 |
| * GetGroupMembership                                                |   0x02 |
| * RemoveAllGroups                                                   |   0x04 |
| * RemoveGroup                                                       |   0x03 |
| * ViewGroup                                                         |   0x01 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * NameSupport                                                       | 0x0000 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Groups server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeGroupsClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Groups server read command for the name support attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeGroupsClusterReadNameSupportAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Groups server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeGroupsClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster Identify                                                    | 0x0003 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * Identify                                                          |   0x00 |
| * IdentifyQuery                                                     |   0x01 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * IdentifyTime                                                      | 0x0000 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Identify server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeIdentifyClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Identify server read command for the identify time attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeIdentifyClusterReadIdentifyTimeAttribute(uint8_t seqNum,
                                                                                chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Identify server write command for the identify time attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeIdentifyClusterWriteIdentifyTimeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t identifyTime);

/**
 * @brief
 *    Encode a Identify server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeIdentifyClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                   chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster KeypadInput                                                 | 0x0509 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * SendKey                                                           |   0x00 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Keypad Input server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeKeypadInputClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Keypad Input server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeKeypadInputClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                      chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster LevelControl                                                | 0x0008 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * Move                                                              |   0x01 |
| * MoveToLevel                                                       |   0x00 |
| * MoveToLevelWithOnOff                                              |   0x04 |
| * MoveWithOnOff                                                     |   0x05 |
| * Step                                                              |   0x02 |
| * StepWithOnOff                                                     |   0x06 |
| * Stop                                                              |   0x03 |
| * StopWithOnOff                                                     |   0x07 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * CurrentLevel                                                      | 0x0000 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Level Control server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeLevelControlClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Level Control server read command for the current level attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeLevelControlClusterReadCurrentLevelAttribute(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Level Control server configure report command for the current level attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeLevelControlClusterConfigureCurrentLevelAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint,
                                                                                         uint16_t minInterval, uint16_t maxInterval,
                                                                                         uint8_t change);

/**
 * @brief
 *    Encode a Level Control server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeLevelControlClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                       chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster LowPower                                                    | 0x0508 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * Sleep                                                             |   0x00 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Low Power server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeLowPowerClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Low Power server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeLowPowerClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                   chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster MediaInput                                                  | 0x0507 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * HideInputStatus                                                   |   0x02 |
| * RenameInput                                                       |   0x03 |
| * SelectInput                                                       |   0x00 |
| * ShowInputStatus                                                   |   0x01 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * MediaInputList                                                    | 0x0000 |
| * CurrentMediaInput                                                 | 0x0001 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Media Input server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeMediaInputClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Media Input server read command for the media input list attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeMediaInputClusterReadMediaInputListAttribute(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Media Input server read command for the current media input attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeMediaInputClusterReadCurrentMediaInputAttribute(uint8_t seqNum,
                                                                                       chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Media Input server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeMediaInputClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                     chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster MediaPlayback                                               | 0x0506 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * MediaFastForward                                                  |   0x07 |
| * MediaNext                                                         |   0x05 |
| * MediaPause                                                        |   0x01 |
| * MediaPlay                                                         |   0x00 |
| * MediaPrevious                                                     |   0x04 |
| * MediaRewind                                                       |   0x06 |
| * MediaSeek                                                         |   0x0A |
| * MediaSkipBackward                                                 |   0x09 |
| * MediaSkipForward                                                  |   0x08 |
| * MediaStartOver                                                    |   0x03 |
| * MediaStop                                                         |   0x02 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Media Playback server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeMediaPlaybackClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Media Playback server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeMediaPlaybackClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                        chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster NetworkCommissioning                                        | 0x0031 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * AddThreadNetwork                                                  |   0x06 |
| * AddWiFiNetwork                                                    |   0x02 |
| * DisableNetwork                                                    |   0x0E |
| * EnableNetwork                                                     |   0x0C |
| * GetLastNetworkCommissioningResult                                 |   0x10 |
| * RemoveNetwork                                                     |   0x0A |
| * ScanNetworks                                                      |   0x00 |
| * UpdateThreadNetwork                                               |   0x08 |
| * UpdateWiFiNetwork                                                 |   0x04 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Network Commissioning server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeNetworkCommissioningClusterDiscoverAttributes(uint8_t seqNum,
                                                                                     chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Network Commissioning server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeNetworkCommissioningClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster OtaSoftwareUpdateProvider                                   | 0x0029 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * ApplyUpdateRequest                                                |   0x01 |
| * NotifyUpdateApplied                                               |   0x02 |
| * QueryImage                                                        |   0x00 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a OTA Software Update Provider server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOtaSoftwareUpdateProviderClusterDiscoverAttributes(uint8_t seqNum,
                                                                                          chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a OTA Software Update Provider server read command for the cluster revision attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeOtaSoftwareUpdateProviderClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster OccupancySensing                                            | 0x0406 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * Occupancy                                                         | 0x0000 |
| * OccupancySensorType                                               | 0x0001 |
| * OccupancySensorTypeBitmap                                         | 0x0002 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Occupancy Sensing server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOccupancySensingClusterDiscoverAttributes(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Occupancy Sensing server read command for the occupancy attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOccupancySensingClusterReadOccupancyAttribute(uint8_t seqNum,
                                                                                     chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Occupancy Sensing server configure report command for the occupancy attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOccupancySensingClusterConfigureOccupancyAttribute(uint8_t seqNum,
                                                                                          chip::EndpointId destinationEndpoint,
                                                                                          uint16_t minInterval,
                                                                                          uint16_t maxInterval);

/**
 * @brief
 *    Encode a Occupancy Sensing server read command for the occupancy sensor type attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeOccupancySensingClusterReadOccupancySensorTypeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Occupancy Sensing server read command for the occupancy sensor type bitmap attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeOccupancySensingClusterReadOccupancySensorTypeBitmapAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Occupancy Sensing server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOccupancySensingClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                           chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster OnOff                                                       | 0x0006 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * Off                                                               |   0x00 |
| * OffWithEffect                                                     |   0x40 |
| * On                                                                |   0x01 |
| * OnWithRecallGlobalScene                                           |   0x41 |
| * OnWithTimedOff                                                    |   0x42 |
| * Toggle                                                            |   0x02 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * OnOff                                                             | 0x0000 |
| * GlobalSceneControl                                                | 0x4000 |
| * OnTime                                                            | 0x4001 |
| * OffWaitTime                                                       | 0x4002 |
| * StartUpOnOff                                                      | 0x4003 |
| * FeatureMap                                                        | 0xFFFC |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a On/off server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOnOffClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a On/off server read command for the OnOff attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOnOffClusterReadOnOffAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a On/off server configure report command for the OnOff attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOnOffClusterConfigureOnOffAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                           uint16_t minInterval, uint16_t maxInterval);

/**
 * @brief
 *    Encode a On/off server read command for the GlobalSceneControl attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOnOffClusterReadGlobalSceneControlAttribute(uint8_t seqNum,
                                                                                   chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a On/off server read command for the OnTime attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOnOffClusterReadOnTimeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a On/off server write command for the OnTime attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOnOffClusterWriteOnTimeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                        uint16_t onTime);

/**
 * @brief
 *    Encode a On/off server read command for the OffWaitTime attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOnOffClusterReadOffWaitTimeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a On/off server write command for the OffWaitTime attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOnOffClusterWriteOffWaitTimeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                             uint16_t offWaitTime);

/**
 * @brief
 *    Encode a On/off server read command for the StartUpOnOff attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOnOffClusterReadStartUpOnOffAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a On/off server write command for the StartUpOnOff attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOnOffClusterWriteStartUpOnOffAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                              uint8_t startUpOnOff);

/**
 * @brief
 *    Encode a On/off server read command for the feature map attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOnOffClusterReadFeatureMapAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a On/off server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOnOffClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster OperationalCredentials                                      | 0x003E |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * AddOpCert                                                         |   0x06 |
| * AddTrustedRootCertificate                                         |   0xA1 |
| * OpCSRRequest                                                      |   0x04 |
| * RemoveAllFabrics                                                  |   0x0B |
| * RemoveFabric                                                      |   0x0A |
| * RemoveTrustedRootCertificate                                      |   0xA2 |
| * SetFabric                                                         |   0x00 |
| * UpdateFabricLabel                                                 |   0x09 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * FabricsList                                                       | 0x0001 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Operational Credentials server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOperationalCredentialsClusterDiscoverAttributes(uint8_t seqNum,
                                                                                       chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Operational Credentials server read command for the fabrics list attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeOperationalCredentialsClusterReadFabricsListAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Operational Credentials server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeOperationalCredentialsClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster PressureMeasurement                                         | 0x0403 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * MeasuredValue                                                     | 0x0000 |
| * MinMeasuredValue                                                  | 0x0001 |
| * MaxMeasuredValue                                                  | 0x0002 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Pressure Measurement server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodePressureMeasurementClusterDiscoverAttributes(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Pressure Measurement server read command for the measured value attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodePressureMeasurementClusterReadMeasuredValueAttribute(uint8_t seqNum,
                                                                                            chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Pressure Measurement server configure report command for the measured value attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodePressureMeasurementClusterConfigureMeasuredValueAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                uint16_t minInterval, uint16_t maxInterval, int16_t change);

/**
 * @brief
 *    Encode a Pressure Measurement server read command for the min measured value attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodePressureMeasurementClusterReadMinMeasuredValueAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Pressure Measurement server read command for the max measured value attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodePressureMeasurementClusterReadMaxMeasuredValueAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Pressure Measurement server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodePressureMeasurementClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                              chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster PumpConfigurationAndControl                                 | 0x0200 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * MaxPressure                                                       | 0x0000 |
| * MaxSpeed                                                          | 0x0001 |
| * MaxFlow                                                           | 0x0002 |
| * EffectiveOperationMode                                            | 0x0011 |
| * EffectiveControlMode                                              | 0x0012 |
| * Capacity                                                          | 0x0013 |
| * OperationMode                                                     | 0x0020 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Pump Configuration and Control server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodePumpConfigurationAndControlClusterDiscoverAttributes(uint8_t seqNum,
                                                                                            chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Pump Configuration and Control server read command for the max pressure attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodePumpConfigurationAndControlClusterReadMaxPressureAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Pump Configuration and Control server read command for the max speed attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodePumpConfigurationAndControlClusterReadMaxSpeedAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Pump Configuration and Control server read command for the max flow attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodePumpConfigurationAndControlClusterReadMaxFlowAttribute(uint8_t seqNum,
                                                                                              chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Pump Configuration and Control server read command for the effective operation mode attribute into buffer including
 * the APS frame
 */
chip::System::PacketBufferHandle
encodePumpConfigurationAndControlClusterReadEffectiveOperationModeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Pump Configuration and Control server read command for the effective control mode attribute into buffer including the
 * APS frame
 */
chip::System::PacketBufferHandle
encodePumpConfigurationAndControlClusterReadEffectiveControlModeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Pump Configuration and Control server read command for the capacity attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodePumpConfigurationAndControlClusterReadCapacityAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Pump Configuration and Control server configure report command for the capacity attribute into buffer including the
 * APS frame
 */
chip::System::PacketBufferHandle
encodePumpConfigurationAndControlClusterConfigureCapacityAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                   uint16_t minInterval, uint16_t maxInterval, int16_t change);

/**
 * @brief
 *    Encode a Pump Configuration and Control server read command for the operation mode attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodePumpConfigurationAndControlClusterReadOperationModeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Pump Configuration and Control server write command for the operation mode attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodePumpConfigurationAndControlClusterWriteOperationModeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                    uint8_t operationMode);

/**
 * @brief
 *    Encode a Pump Configuration and Control server read command for the cluster revision attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodePumpConfigurationAndControlClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster RelativeHumidityMeasurement                                 | 0x0405 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * MeasuredValue                                                     | 0x0000 |
| * MinMeasuredValue                                                  | 0x0001 |
| * MaxMeasuredValue                                                  | 0x0002 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Relative Humidity Measurement server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeRelativeHumidityMeasurementClusterDiscoverAttributes(uint8_t seqNum,
                                                                                            chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Relative Humidity Measurement server read command for the measured value attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeRelativeHumidityMeasurementClusterReadMeasuredValueAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Relative Humidity Measurement server configure report command for the measured value attribute into buffer including
 * the APS frame
 */
chip::System::PacketBufferHandle encodeRelativeHumidityMeasurementClusterConfigureMeasuredValueAttribute(
    uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t minInterval, uint16_t maxInterval, uint16_t change);

/**
 * @brief
 *    Encode a Relative Humidity Measurement server read command for the min measured value attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeRelativeHumidityMeasurementClusterReadMinMeasuredValueAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Relative Humidity Measurement server read command for the max measured value attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeRelativeHumidityMeasurementClusterReadMaxMeasuredValueAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Relative Humidity Measurement server read command for the cluster revision attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeRelativeHumidityMeasurementClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster Scenes                                                      | 0x0005 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * AddScene                                                          |   0x00 |
| * GetSceneMembership                                                |   0x06 |
| * RecallScene                                                       |   0x05 |
| * RemoveAllScenes                                                   |   0x03 |
| * RemoveScene                                                       |   0x02 |
| * StoreScene                                                        |   0x04 |
| * ViewScene                                                         |   0x01 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * SceneCount                                                        | 0x0000 |
| * CurrentScene                                                      | 0x0001 |
| * CurrentGroup                                                      | 0x0002 |
| * SceneValid                                                        | 0x0003 |
| * NameSupport                                                       | 0x0004 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Scenes server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeScenesClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Scenes server read command for the scene count attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeScenesClusterReadSceneCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Scenes server read command for the current scene attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeScenesClusterReadCurrentSceneAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Scenes server read command for the current group attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeScenesClusterReadCurrentGroupAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Scenes server read command for the scene valid attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeScenesClusterReadSceneValidAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Scenes server read command for the name support attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeScenesClusterReadNameSupportAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Scenes server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeScenesClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster SoftwareDiagnostics                                         | 0x0034 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * ResetWatermarks                                                   |   0x00 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * CurrentHeapHighWatermark                                          | 0x0003 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Software Diagnostics server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeSoftwareDiagnosticsClusterDiscoverAttributes(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Software Diagnostics server read command for the CurrentHeapHighWatermark attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeSoftwareDiagnosticsClusterReadCurrentHeapHighWatermarkAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Software Diagnostics server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeSoftwareDiagnosticsClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                              chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster Switch                                                      | 0x003B |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * NumberOfPositions                                                 | 0x0000 |
| * CurrentPosition                                                   | 0x0001 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Switch server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeSwitchClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Switch server read command for the number of positions attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeSwitchClusterReadNumberOfPositionsAttribute(uint8_t seqNum,
                                                                                   chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Switch server read command for the current position attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeSwitchClusterReadCurrentPositionAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Switch server configure report command for the current position attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeSwitchClusterConfigureCurrentPositionAttribute(uint8_t seqNum,
                                                                                      chip::EndpointId destinationEndpoint,
                                                                                      uint16_t minInterval, uint16_t maxInterval,
                                                                                      uint8_t change);

/**
 * @brief
 *    Encode a Switch server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeSwitchClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster TvChannel                                                   | 0x0504 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * ChangeChannel                                                     |   0x00 |
| * ChangeChannelByNumber                                             |   0x01 |
| * SkipChannel                                                       |   0x02 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * TvChannelList                                                     | 0x0000 |
| * TvChannelLineup                                                   | 0x0001 |
| * CurrentTvChannel                                                  | 0x0002 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a TV Channel server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTvChannelClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a TV Channel server read command for the tv channel list attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTvChannelClusterReadTvChannelListAttribute(uint8_t seqNum,
                                                                                  chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a TV Channel server read command for the tv channel lineup attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTvChannelClusterReadTvChannelLineupAttribute(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a TV Channel server read command for the current tv channel attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTvChannelClusterReadCurrentTvChannelAttribute(uint8_t seqNum,
                                                                                     chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a TV Channel server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTvChannelClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster TargetNavigator                                             | 0x0505 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * NavigateTarget                                                    |   0x00 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * TargetNavigatorList                                               | 0x0000 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Target Navigator server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTargetNavigatorClusterDiscoverAttributes(uint8_t seqNum,
                                                                                chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Target Navigator server read command for the target navigator list attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTargetNavigatorClusterReadTargetNavigatorListAttribute(uint8_t seqNum,
                                                                                              chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Target Navigator server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTargetNavigatorClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                          chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster TemperatureMeasurement                                      | 0x0402 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * MeasuredValue                                                     | 0x0000 |
| * MinMeasuredValue                                                  | 0x0001 |
| * MaxMeasuredValue                                                  | 0x0002 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Temperature Measurement server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTemperatureMeasurementClusterDiscoverAttributes(uint8_t seqNum,
                                                                                       chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Temperature Measurement server read command for the measured value attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeTemperatureMeasurementClusterReadMeasuredValueAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Temperature Measurement server configure report command for the measured value attribute into buffer including the
 * APS frame
 */
chip::System::PacketBufferHandle
encodeTemperatureMeasurementClusterConfigureMeasuredValueAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                   uint16_t minInterval, uint16_t maxInterval, int16_t change);

/**
 * @brief
 *    Encode a Temperature Measurement server read command for the min measured value attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeTemperatureMeasurementClusterReadMinMeasuredValueAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Temperature Measurement server read command for the max measured value attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeTemperatureMeasurementClusterReadMaxMeasuredValueAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Temperature Measurement server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeTemperatureMeasurementClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster TestCluster                                                 | 0x050F |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * Test                                                              |   0x00 |
| * TestNotHandled                                                    |   0x01 |
| * TestSpecific                                                      |   0x02 |
| * TestUnknownCommand                                                |   0x03 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * Boolean                                                           | 0x0000 |
| * Bitmap8                                                           | 0x0001 |
| * Bitmap16                                                          | 0x0002 |
| * Bitmap32                                                          | 0x0003 |
| * Bitmap64                                                          | 0x0004 |
| * Int8u                                                             | 0x0005 |
| * Int16u                                                            | 0x0006 |
| * Int32u                                                            | 0x0008 |
| * Int64u                                                            | 0x000C |
| * Int8s                                                             | 0x000D |
| * Int16s                                                            | 0x000E |
| * Int32s                                                            | 0x0010 |
| * Int64s                                                            | 0x0014 |
| * Enum8                                                             | 0x0015 |
| * Enum16                                                            | 0x0016 |
| * OctetString                                                       | 0x0019 |
| * ListInt8u                                                         | 0x001A |
| * ListOctetString                                                   | 0x001B |
| * ListStructOctetString                                             | 0x001C |
| * LongOctetString                                                   | 0x001D |
| * CharString                                                        | 0x001E |
| * LongCharString                                                    | 0x001F |
| * Unsupported                                                       | 0x00FF |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Test Cluster server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server read command for the boolean attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadBooleanAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the boolean attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterWriteBooleanAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                               uint8_t boolean);

/**
 * @brief
 *    Encode a Test Cluster server read command for the bitmap8 attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadBitmap8Attribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the bitmap8 attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterWriteBitmap8Attribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                               uint8_t bitmap8);

/**
 * @brief
 *    Encode a Test Cluster server read command for the bitmap16 attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadBitmap16Attribute(uint8_t seqNum,
                                                                               chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the bitmap16 attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeTestClusterClusterWriteBitmap16Attribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t bitmap16);

/**
 * @brief
 *    Encode a Test Cluster server read command for the bitmap32 attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadBitmap32Attribute(uint8_t seqNum,
                                                                               chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the bitmap32 attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeTestClusterClusterWriteBitmap32Attribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint32_t bitmap32);

/**
 * @brief
 *    Encode a Test Cluster server read command for the bitmap64 attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadBitmap64Attribute(uint8_t seqNum,
                                                                               chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the bitmap64 attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeTestClusterClusterWriteBitmap64Attribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint64_t bitmap64);

/**
 * @brief
 *    Encode a Test Cluster server read command for the int8u attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadInt8uAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the int8u attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterWriteInt8uAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                             uint8_t int8u);

/**
 * @brief
 *    Encode a Test Cluster server read command for the int16u attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadInt16uAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the int16u attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterWriteInt16uAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                              uint16_t int16u);

/**
 * @brief
 *    Encode a Test Cluster server read command for the int32u attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadInt32uAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the int32u attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterWriteInt32uAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                              uint32_t int32u);

/**
 * @brief
 *    Encode a Test Cluster server read command for the int64u attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadInt64uAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the int64u attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterWriteInt64uAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                              uint64_t int64u);

/**
 * @brief
 *    Encode a Test Cluster server read command for the int8s attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadInt8sAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the int8s attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterWriteInt8sAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                             int8_t int8s);

/**
 * @brief
 *    Encode a Test Cluster server read command for the int16s attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadInt16sAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the int16s attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterWriteInt16sAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                              int16_t int16s);

/**
 * @brief
 *    Encode a Test Cluster server read command for the int32s attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadInt32sAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the int32s attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterWriteInt32sAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                              int32_t int32s);

/**
 * @brief
 *    Encode a Test Cluster server read command for the int64s attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadInt64sAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the int64s attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterWriteInt64sAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                              int64_t int64s);

/**
 * @brief
 *    Encode a Test Cluster server read command for the enum8 attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadEnum8Attribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the enum8 attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterWriteEnum8Attribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                             uint8_t enum8);

/**
 * @brief
 *    Encode a Test Cluster server read command for the enum16 attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadEnum16Attribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the enum16 attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterWriteEnum16Attribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                              uint16_t enum16);

/**
 * @brief
 *    Encode a Test Cluster server read command for the octet_string attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadOctetStringAttribute(uint8_t seqNum,
                                                                                  chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the octet_string attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeTestClusterClusterWriteOctetStringAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, chip::ByteSpan octetString);

/**
 * @brief
 *    Encode a Test Cluster server read command for the list_int8u attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadListInt8uAttribute(uint8_t seqNum,
                                                                                chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server read command for the list_octet_string attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadListOctetStringAttribute(uint8_t seqNum,
                                                                                      chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server read command for the list_struct_octet_string attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadListStructOctetStringAttribute(uint8_t seqNum,
                                                                                            chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server read command for the long_octet_string attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadLongOctetStringAttribute(uint8_t seqNum,
                                                                                      chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the long_octet_string attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterWriteLongOctetStringAttribute(uint8_t seqNum,
                                                                                       chip::EndpointId destinationEndpoint,
                                                                                       chip::ByteSpan longOctetString);

/**
 * @brief
 *    Encode a Test Cluster server read command for the char_string attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadCharStringAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the char_string attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeTestClusterClusterWriteCharStringAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, chip::ByteSpan charString);

/**
 * @brief
 *    Encode a Test Cluster server read command for the long_char_string attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadLongCharStringAttribute(uint8_t seqNum,
                                                                                     chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the long_char_string attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterWriteLongCharStringAttribute(uint8_t seqNum,
                                                                                      chip::EndpointId destinationEndpoint,
                                                                                      chip::ByteSpan longCharString);

/**
 * @brief
 *    Encode a Test Cluster server read command for the unsupported attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadUnsupportedAttribute(uint8_t seqNum,
                                                                                  chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Test Cluster server write command for the unsupported attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeTestClusterClusterWriteUnsupportedAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint8_t unsupported);

/**
 * @brief
 *    Encode a Test Cluster server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeTestClusterClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                      chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster Thermostat                                                  | 0x0201 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * ClearWeeklySchedule                                               |   0x03 |
| * GetRelayStatusLog                                                 |   0x04 |
| * GetWeeklySchedule                                                 |   0x02 |
| * SetWeeklySchedule                                                 |   0x01 |
| * SetpointRaiseLower                                                |   0x00 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * LocalTemperature                                                  | 0x0000 |
| * OccupiedCoolingSetpoint                                           | 0x0011 |
| * OccupiedHeatingSetpoint                                           | 0x0012 |
| * ControlSequenceOfOperation                                        | 0x001B |
| * SystemMode                                                        | 0x001C |
| * StartOfWeek                                                       | 0x0020 |
| * NumberOfWeeklyTransitions                                         | 0x0021 |
| * NumberOfDailyTransitions                                          | 0x0022 |
| * FeatureMap                                                        | 0xFFFC |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Thermostat server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeThermostatClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thermostat server read command for the local temperature attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeThermostatClusterReadLocalTemperatureAttribute(uint8_t seqNum,
                                                                                      chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thermostat server configure report command for the local temperature attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeThermostatClusterConfigureLocalTemperatureAttribute(uint8_t seqNum,
                                                                                           chip::EndpointId destinationEndpoint,
                                                                                           uint16_t minInterval,
                                                                                           uint16_t maxInterval, int16_t change);

/**
 * @brief
 *    Encode a Thermostat server read command for the occupied cooling setpoint attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeThermostatClusterReadOccupiedCoolingSetpointAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thermostat server write command for the occupied cooling setpoint attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeThermostatClusterWriteOccupiedCoolingSetpointAttribute(uint8_t seqNum,
                                                                                              chip::EndpointId destinationEndpoint,
                                                                                              int16_t occupiedCoolingSetpoint);

/**
 * @brief
 *    Encode a Thermostat server read command for the occupied heating setpoint attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeThermostatClusterReadOccupiedHeatingSetpointAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thermostat server write command for the occupied heating setpoint attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeThermostatClusterWriteOccupiedHeatingSetpointAttribute(uint8_t seqNum,
                                                                                              chip::EndpointId destinationEndpoint,
                                                                                              int16_t occupiedHeatingSetpoint);

/**
 * @brief
 *    Encode a Thermostat server read command for the control sequence of operation attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThermostatClusterReadControlSequenceOfOperationAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thermostat server write command for the control sequence of operation attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThermostatClusterWriteControlSequenceOfOperationAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                uint8_t controlSequenceOfOperation);

/**
 * @brief
 *    Encode a Thermostat server read command for the system mode attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeThermostatClusterReadSystemModeAttribute(uint8_t seqNum,
                                                                                chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thermostat server write command for the system mode attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThermostatClusterWriteSystemModeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint8_t systemMode);

/**
 * @brief
 *    Encode a Thermostat server read command for the start of week attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeThermostatClusterReadStartOfWeekAttribute(uint8_t seqNum,
                                                                                 chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thermostat server read command for the number of weekly transitions attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThermostatClusterReadNumberOfWeeklyTransitionsAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thermostat server read command for the number of daily transitions attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeThermostatClusterReadNumberOfDailyTransitionsAttribute(uint8_t seqNum,
                                                                                              chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thermostat server read command for the feature map attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeThermostatClusterReadFeatureMapAttribute(uint8_t seqNum,
                                                                                chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thermostat server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeThermostatClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                     chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster ThreadNetworkDiagnostics                                    | 0x0035 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * ResetCounts                                                       |   0x00 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * Channel                                                           | 0x0000 |
| * RoutingRole                                                       | 0x0001 |
| * NetworkName                                                       | 0x0002 |
| * PanId                                                             | 0x0003 |
| * ExtendedPanId                                                     | 0x0004 |
| * MeshLocalPrefix                                                   | 0x0005 |
| * OverrunCount                                                      | 0x0006 |
| * NeighborTableList                                                 | 0x0007 |
| * RouteTableList                                                    | 0x0008 |
| * PartitionId                                                       | 0x0009 |
| * Weighting                                                         | 0x000A |
| * DataVersion                                                       | 0x000B |
| * StableDataVersion                                                 | 0x000C |
| * LeaderRouterId                                                    | 0x000D |
| * DetachedRoleCount                                                 | 0x000E |
| * ChildRoleCount                                                    | 0x000F |
| * RouterRoleCount                                                   | 0x0010 |
| * LeaderRoleCount                                                   | 0x0011 |
| * AttachAttemptCount                                                | 0x0012 |
| * PartitionIdChangeCount                                            | 0x0013 |
| * BetterPartitionAttachAttemptCount                                 | 0x0014 |
| * ParentChangeCount                                                 | 0x0015 |
| * TxTotalCount                                                      | 0x0016 |
| * TxUnicastCount                                                    | 0x0017 |
| * TxBroadcastCount                                                  | 0x0018 |
| * TxAckRequestedCount                                               | 0x0019 |
| * TxAckedCount                                                      | 0x001A |
| * TxNoAckRequestedCount                                             | 0x001B |
| * TxDataCount                                                       | 0x001C |
| * TxDataPollCount                                                   | 0x001D |
| * TxBeaconCount                                                     | 0x001E |
| * TxBeaconRequestCount                                              | 0x001F |
| * TxOtherCount                                                      | 0x0020 |
| * TxRetryCount                                                      | 0x0021 |
| * TxDirectMaxRetryExpiryCount                                       | 0x0022 |
| * TxIndirectMaxRetryExpiryCount                                     | 0x0023 |
| * TxErrCcaCount                                                     | 0x0024 |
| * TxErrAbortCount                                                   | 0x0025 |
| * TxErrBusyChannelCount                                             | 0x0026 |
| * RxTotalCount                                                      | 0x0027 |
| * RxUnicastCount                                                    | 0x0028 |
| * RxBroadcastCount                                                  | 0x0029 |
| * RxDataCount                                                       | 0x002A |
| * RxDataPollCount                                                   | 0x002B |
| * RxBeaconCount                                                     | 0x002C |
| * RxBeaconRequestCount                                              | 0x002D |
| * RxOtherCount                                                      | 0x002E |
| * RxAddressFilteredCount                                            | 0x002F |
| * RxDestAddrFilteredCount                                           | 0x0030 |
| * RxDuplicatedCount                                                 | 0x0031 |
| * RxErrNoFrameCount                                                 | 0x0032 |
| * RxErrUnknownNeighborCount                                         | 0x0033 |
| * RxErrInvalidSrcAddrCount                                          | 0x0034 |
| * RxErrSecCount                                                     | 0x0035 |
| * RxErrFcsCount                                                     | 0x0036 |
| * RxErrOtherCount                                                   | 0x0037 |
| * SecurityPolicy                                                    | 0x003B |
| * ChannelMask                                                       | 0x003C |
| * OperationalDatasetComponents                                      | 0x003D |
| * ActiveNetworkFaultsList                                           | 0x003E |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Thread Network Diagnostics server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeThreadNetworkDiagnosticsClusterDiscoverAttributes(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the channel attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeThreadNetworkDiagnosticsClusterReadChannelAttribute(uint8_t seqNum,
                                                                                           chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RoutingRole attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRoutingRoleAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the NetworkName attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadNetworkNameAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the PanId attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeThreadNetworkDiagnosticsClusterReadPanIdAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the ExtendedPanId attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadExtendedPanIdAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the MeshLocalPrefix attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadMeshLocalPrefixAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the OverrunCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadOverrunCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the NeighborTableList attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadNeighborTableListAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RouteTableList attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRouteTableListAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the PartitionId attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadPartitionIdAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the weighting attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeThreadNetworkDiagnosticsClusterReadWeightingAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the DataVersion attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadDataVersionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the StableDataVersion attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadStableDataVersionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the LeaderRouterId attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadLeaderRouterIdAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the DetachedRoleCount attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadDetachedRoleCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the ChildRoleCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadChildRoleCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RouterRoleCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRouterRoleCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the LeaderRoleCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadLeaderRoleCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the AttachAttemptCount attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadAttachAttemptCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the PartitionIdChangeCount attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadPartitionIdChangeCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the BetterPartitionAttachAttemptCount attribute into buffer
 * including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadBetterPartitionAttachAttemptCountAttribute(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the ParentChangeCount attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadParentChangeCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the TxTotalCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadTxTotalCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the TxUnicastCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadTxUnicastCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the TxBroadcastCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadTxBroadcastCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the TxAckRequestedCount attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadTxAckRequestedCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the TxAckedCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadTxAckedCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the TxNoAckRequestedCount attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadTxNoAckRequestedCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the TxDataCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadTxDataCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the TxDataPollCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadTxDataPollCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the TxBeaconCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadTxBeaconCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the TxBeaconRequestCount attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadTxBeaconRequestCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the TxOtherCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadTxOtherCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the TxRetryCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadTxRetryCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the TxDirectMaxRetryExpiryCount attribute into buffer including
 * the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadTxDirectMaxRetryExpiryCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the TxIndirectMaxRetryExpiryCount attribute into buffer including
 * the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadTxIndirectMaxRetryExpiryCountAttribute(uint8_t seqNum,
                                                                                chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the TxErrCcaCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadTxErrCcaCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the TxErrAbortCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadTxErrAbortCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the TxErrBusyChannelCount attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadTxErrBusyChannelCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RxTotalCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRxTotalCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RxUnicastCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRxUnicastCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RxBroadcastCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRxBroadcastCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RxDataCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRxDataCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RxDataPollCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRxDataPollCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RxBeaconCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRxBeaconCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RxBeaconRequestCount attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRxBeaconRequestCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RxOtherCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRxOtherCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RxAddressFilteredCount attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRxAddressFilteredCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RxDestAddrFilteredCount attribute into buffer including the
 * APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRxDestAddrFilteredCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RxDuplicatedCount attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRxDuplicatedCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RxErrNoFrameCount attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRxErrNoFrameCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RxErrUnknownNeighborCount attribute into buffer including the
 * APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRxErrUnknownNeighborCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RxErrInvalidSrcAddrCount attribute into buffer including the
 * APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRxErrInvalidSrcAddrCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RxErrSecCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRxErrSecCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RxErrFcsCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRxErrFcsCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the RxErrOtherCount attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadRxErrOtherCountAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the SecurityPolicy attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadSecurityPolicyAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the ChannelMask attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadChannelMaskAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the OperationalDatasetComponents attribute into buffer including
 * the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadOperationalDatasetComponentsAttribute(uint8_t seqNum,
                                                                               chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the ActiveNetworkFaultsList attribute into buffer including the
 * APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadActiveNetworkFaultsListAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Thread Network Diagnostics server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeThreadNetworkDiagnosticsClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster WakeOnLan                                                   | 0x0503 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * WakeOnLanMacAddress                                               | 0x0000 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Wake on LAN server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWakeOnLanClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Wake on LAN server read command for the wake on lan mac address attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWakeOnLanClusterReadWakeOnLanMacAddressAttribute(uint8_t seqNum,
                                                                                        chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Wake on LAN server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWakeOnLanClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                    chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster WiFiNetworkDiagnostics                                      | 0x0036 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * ResetCounts                                                       |   0x00 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * Bssid                                                             | 0x0000 |
| * SecurityType                                                      | 0x0001 |
| * WiFiVersion                                                       | 0x0002 |
| * ChannelNumber                                                     | 0x0003 |
| * Rssi                                                              | 0x0004 |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a WiFi Network Diagnostics server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWiFiNetworkDiagnosticsClusterDiscoverAttributes(uint8_t seqNum,
                                                                                       chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a WiFi Network Diagnostics server read command for the bssid attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWiFiNetworkDiagnosticsClusterReadBssidAttribute(uint8_t seqNum,
                                                                                       chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a WiFi Network Diagnostics server read command for the SecurityType attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWiFiNetworkDiagnosticsClusterReadSecurityTypeAttribute(uint8_t seqNum,
                                                                                              chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a WiFi Network Diagnostics server read command for the WiFiVersion attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWiFiNetworkDiagnosticsClusterReadWiFiVersionAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a WiFi Network Diagnostics server read command for the ChannelNumber attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeWiFiNetworkDiagnosticsClusterReadChannelNumberAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a WiFi Network Diagnostics server read command for the Rssi attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWiFiNetworkDiagnosticsClusterReadRssiAttribute(uint8_t seqNum,
                                                                                      chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a WiFi Network Diagnostics server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeWiFiNetworkDiagnosticsClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/*----------------------------------------------------------------------------*\
| Cluster WindowCovering                                              | 0x0102 |
|------------------------------------------------------------------------------|
| Commands:                                                           |        |
| * DownOrClose                                                       |   0x01 |
| * GoToLiftPercentage                                                |   0x05 |
| * GoToLiftValue                                                     |   0x04 |
| * GoToTiltPercentage                                                |   0x08 |
| * GoToTiltValue                                                     |   0x07 |
| * StopMotion                                                        |   0x02 |
| * UpOrOpen                                                          |   0x00 |
|------------------------------------------------------------------------------|
| Attributes:                                                         |        |
| * Type                                                              | 0x0000 |
| * CurrentPositionLift                                               | 0x0003 |
| * CurrentPositionTilt                                               | 0x0004 |
| * ConfigStatus                                                      | 0x0007 |
| * CurrentPositionLiftPercentage                                     | 0x0008 |
| * CurrentPositionTiltPercentage                                     | 0x0009 |
| * OperationalStatus                                                 | 0x000A |
| * TargetPositionLiftPercent100ths                                   | 0x000B |
| * TargetPositionTiltPercent100ths                                   | 0x000C |
| * EndProductType                                                    | 0x000D |
| * CurrentPositionLiftPercent100ths                                  | 0x000E |
| * CurrentPositionTiltPercent100ths                                  | 0x000F |
| * InstalledOpenLimitLift                                            | 0x0010 |
| * InstalledClosedLimitLift                                          | 0x0011 |
| * InstalledOpenLimitTilt                                            | 0x0012 |
| * InstalledClosedLimitTilt                                          | 0x0013 |
| * Mode                                                              | 0x0017 |
| * SafetyStatus                                                      | 0x001A |
| * ClusterRevision                                                   | 0xFFFD |
\*----------------------------------------------------------------------------*/

/**
 * @brief
 *    Encode a Window Covering server discover command into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterDiscoverAttributes(uint8_t seqNum,
                                                                               chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server read command for the Type attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterReadTypeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server read command for the CurrentPositionLift attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterReadCurrentPositionLiftAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server read command for the CurrentPositionTilt attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterReadCurrentPositionTiltAttribute(uint8_t seqNum,
                                                                                             chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server read command for the ConfigStatus attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterReadConfigStatusAttribute(uint8_t seqNum,
                                                                                      chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server read command for the CurrentPositionLiftPercentage attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeWindowCoveringClusterReadCurrentPositionLiftPercentageAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server configure report command for the CurrentPositionLiftPercentage attribute into buffer including
 * the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterConfigureCurrentPositionLiftPercentageAttribute(
    uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t minInterval, uint16_t maxInterval, uint8_t change);

/**
 * @brief
 *    Encode a Window Covering server read command for the CurrentPositionTiltPercentage attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeWindowCoveringClusterReadCurrentPositionTiltPercentageAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server configure report command for the CurrentPositionTiltPercentage attribute into buffer including
 * the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterConfigureCurrentPositionTiltPercentageAttribute(
    uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t minInterval, uint16_t maxInterval, uint8_t change);

/**
 * @brief
 *    Encode a Window Covering server read command for the OperationalStatus attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterReadOperationalStatusAttribute(uint8_t seqNum,
                                                                                           chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server configure report command for the OperationalStatus attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeWindowCoveringClusterConfigureOperationalStatusAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                               uint16_t minInterval, uint16_t maxInterval);

/**
 * @brief
 *    Encode a Window Covering server read command for the TargetPositionLiftPercent100ths attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeWindowCoveringClusterReadTargetPositionLiftPercent100thsAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server configure report command for the TargetPositionLiftPercent100ths attribute into buffer
 * including the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterConfigureTargetPositionLiftPercent100thsAttribute(
    uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t minInterval, uint16_t maxInterval, uint16_t change);

/**
 * @brief
 *    Encode a Window Covering server read command for the TargetPositionTiltPercent100ths attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeWindowCoveringClusterReadTargetPositionTiltPercent100thsAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server configure report command for the TargetPositionTiltPercent100ths attribute into buffer
 * including the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterConfigureTargetPositionTiltPercent100thsAttribute(
    uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t minInterval, uint16_t maxInterval, uint16_t change);

/**
 * @brief
 *    Encode a Window Covering server read command for the EndProductType attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterReadEndProductTypeAttribute(uint8_t seqNum,
                                                                                        chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server read command for the CurrentPositionLiftPercent100ths attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeWindowCoveringClusterReadCurrentPositionLiftPercent100thsAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server configure report command for the CurrentPositionLiftPercent100ths attribute into buffer
 * including the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterConfigureCurrentPositionLiftPercent100thsAttribute(
    uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t minInterval, uint16_t maxInterval, uint16_t change);

/**
 * @brief
 *    Encode a Window Covering server read command for the CurrentPositionTiltPercent100ths attribute into buffer including the APS
 * frame
 */
chip::System::PacketBufferHandle
encodeWindowCoveringClusterReadCurrentPositionTiltPercent100thsAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server configure report command for the CurrentPositionTiltPercent100ths attribute into buffer
 * including the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterConfigureCurrentPositionTiltPercent100thsAttribute(
    uint8_t seqNum, chip::EndpointId destinationEndpoint, uint16_t minInterval, uint16_t maxInterval, uint16_t change);

/**
 * @brief
 *    Encode a Window Covering server read command for the InstalledOpenLimitLift attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeWindowCoveringClusterReadInstalledOpenLimitLiftAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server read command for the InstalledClosedLimitLift attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeWindowCoveringClusterReadInstalledClosedLimitLiftAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server read command for the InstalledOpenLimitTilt attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeWindowCoveringClusterReadInstalledOpenLimitTiltAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server read command for the InstalledClosedLimitTilt attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle
encodeWindowCoveringClusterReadInstalledClosedLimitTiltAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server read command for the Mode attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterReadModeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server write command for the Mode attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterWriteModeAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint,
                                                                               uint8_t mode);

/**
 * @brief
 *    Encode a Window Covering server read command for the SafetyStatus attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterReadSafetyStatusAttribute(uint8_t seqNum,
                                                                                      chip::EndpointId destinationEndpoint);

/**
 * @brief
 *    Encode a Window Covering server configure report command for the SafetyStatus attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterConfigureSafetyStatusAttribute(uint8_t seqNum,
                                                                                           chip::EndpointId destinationEndpoint,
                                                                                           uint16_t minInterval,
                                                                                           uint16_t maxInterval);

/**
 * @brief
 *    Encode a Window Covering server read command for the cluster revision attribute into buffer including the APS frame
 */
chip::System::PacketBufferHandle encodeWindowCoveringClusterReadClusterRevisionAttribute(uint8_t seqNum,
                                                                                         chip::EndpointId destinationEndpoint);
